com.amazonaws.services.groundstation.model.DescribeContactResult Maven / Gradle / Ivy
Show all versions of aws-java-sdk-groundstation Show documentation
/*
* Copyright 2019-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
* the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package com.amazonaws.services.groundstation.model;
import java.io.Serializable;
import javax.annotation.Generated;
/**
*
*
* @see AWS API
* Documentation
*/
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public class DescribeContactResult extends com.amazonaws.AmazonWebServiceResult implements Serializable, Cloneable {
/**
*
* UUID of a contact.
*
*/
private String contactId;
/**
*
* Status of a contact.
*
*/
private String contactStatus;
/**
*
* List describing source and destination details for each dataflow edge.
*
*/
private java.util.List dataflowList;
/**
*
* End time of a contact in UTC.
*
*/
private java.util.Date endTime;
/**
*
* Error message for a contact.
*
*/
private String errorMessage;
/**
*
* Ground station for a contact.
*
*/
private String groundStation;
/**
*
* Maximum elevation angle of a contact.
*
*/
private Elevation maximumElevation;
/**
*
* ARN of a mission profile.
*
*/
private String missionProfileArn;
/**
*
* Amount of time after a contact ends that you’d like to receive a CloudWatch event indicating the pass has
* finished.
*
*/
private java.util.Date postPassEndTime;
/**
*
* Amount of time prior to contact start you’d like to receive a CloudWatch event indicating an upcoming pass.
*
*/
private java.util.Date prePassStartTime;
/**
*
* Region of a contact.
*
*/
private String region;
/**
*
* ARN of a satellite.
*
*/
private String satelliteArn;
/**
*
* Start time of a contact in UTC.
*
*/
private java.util.Date startTime;
/**
*
* Tags assigned to a contact.
*
*/
private java.util.Map tags;
/**
*
* Projected time in UTC your satellite will set below the receive mask. This time is based
* on the satellite's current active ephemeris for future contacts and the ephemeris that was active during contact
* execution for completed contacts.
*
*/
private java.util.Date visibilityEndTime;
/**
*
* Projected time in UTC your satellite will rise above the receive mask. This time is based
* on the satellite's current active ephemeris for future contacts and the ephemeris that was active during contact
* execution for completed contacts.
*
*/
private java.util.Date visibilityStartTime;
/**
*
* UUID of a contact.
*
*
* @param contactId
* UUID of a contact.
*/
public void setContactId(String contactId) {
this.contactId = contactId;
}
/**
*
* UUID of a contact.
*
*
* @return UUID of a contact.
*/
public String getContactId() {
return this.contactId;
}
/**
*
* UUID of a contact.
*
*
* @param contactId
* UUID of a contact.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withContactId(String contactId) {
setContactId(contactId);
return this;
}
/**
*
* Status of a contact.
*
*
* @param contactStatus
* Status of a contact.
* @see ContactStatus
*/
public void setContactStatus(String contactStatus) {
this.contactStatus = contactStatus;
}
/**
*
* Status of a contact.
*
*
* @return Status of a contact.
* @see ContactStatus
*/
public String getContactStatus() {
return this.contactStatus;
}
/**
*
* Status of a contact.
*
*
* @param contactStatus
* Status of a contact.
* @return Returns a reference to this object so that method calls can be chained together.
* @see ContactStatus
*/
public DescribeContactResult withContactStatus(String contactStatus) {
setContactStatus(contactStatus);
return this;
}
/**
*
* Status of a contact.
*
*
* @param contactStatus
* Status of a contact.
* @return Returns a reference to this object so that method calls can be chained together.
* @see ContactStatus
*/
public DescribeContactResult withContactStatus(ContactStatus contactStatus) {
this.contactStatus = contactStatus.toString();
return this;
}
/**
*
* List describing source and destination details for each dataflow edge.
*
*
* @return List describing source and destination details for each dataflow edge.
*/
public java.util.List getDataflowList() {
return dataflowList;
}
/**
*
* List describing source and destination details for each dataflow edge.
*
*
* @param dataflowList
* List describing source and destination details for each dataflow edge.
*/
public void setDataflowList(java.util.Collection dataflowList) {
if (dataflowList == null) {
this.dataflowList = null;
return;
}
this.dataflowList = new java.util.ArrayList(dataflowList);
}
/**
*
* List describing source and destination details for each dataflow edge.
*
*
* NOTE: This method appends the values to the existing list (if any). Use
* {@link #setDataflowList(java.util.Collection)} or {@link #withDataflowList(java.util.Collection)} if you want to
* override the existing values.
*
*
* @param dataflowList
* List describing source and destination details for each dataflow edge.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withDataflowList(DataflowDetail... dataflowList) {
if (this.dataflowList == null) {
setDataflowList(new java.util.ArrayList(dataflowList.length));
}
for (DataflowDetail ele : dataflowList) {
this.dataflowList.add(ele);
}
return this;
}
/**
*
* List describing source and destination details for each dataflow edge.
*
*
* @param dataflowList
* List describing source and destination details for each dataflow edge.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withDataflowList(java.util.Collection dataflowList) {
setDataflowList(dataflowList);
return this;
}
/**
*
* End time of a contact in UTC.
*
*
* @param endTime
* End time of a contact in UTC.
*/
public void setEndTime(java.util.Date endTime) {
this.endTime = endTime;
}
/**
*
* End time of a contact in UTC.
*
*
* @return End time of a contact in UTC.
*/
public java.util.Date getEndTime() {
return this.endTime;
}
/**
*
* End time of a contact in UTC.
*
*
* @param endTime
* End time of a contact in UTC.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withEndTime(java.util.Date endTime) {
setEndTime(endTime);
return this;
}
/**
*
* Error message for a contact.
*
*
* @param errorMessage
* Error message for a contact.
*/
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
/**
*
* Error message for a contact.
*
*
* @return Error message for a contact.
*/
public String getErrorMessage() {
return this.errorMessage;
}
/**
*
* Error message for a contact.
*
*
* @param errorMessage
* Error message for a contact.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withErrorMessage(String errorMessage) {
setErrorMessage(errorMessage);
return this;
}
/**
*
* Ground station for a contact.
*
*
* @param groundStation
* Ground station for a contact.
*/
public void setGroundStation(String groundStation) {
this.groundStation = groundStation;
}
/**
*
* Ground station for a contact.
*
*
* @return Ground station for a contact.
*/
public String getGroundStation() {
return this.groundStation;
}
/**
*
* Ground station for a contact.
*
*
* @param groundStation
* Ground station for a contact.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withGroundStation(String groundStation) {
setGroundStation(groundStation);
return this;
}
/**
*
* Maximum elevation angle of a contact.
*
*
* @param maximumElevation
* Maximum elevation angle of a contact.
*/
public void setMaximumElevation(Elevation maximumElevation) {
this.maximumElevation = maximumElevation;
}
/**
*
* Maximum elevation angle of a contact.
*
*
* @return Maximum elevation angle of a contact.
*/
public Elevation getMaximumElevation() {
return this.maximumElevation;
}
/**
*
* Maximum elevation angle of a contact.
*
*
* @param maximumElevation
* Maximum elevation angle of a contact.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withMaximumElevation(Elevation maximumElevation) {
setMaximumElevation(maximumElevation);
return this;
}
/**
*
* ARN of a mission profile.
*
*
* @param missionProfileArn
* ARN of a mission profile.
*/
public void setMissionProfileArn(String missionProfileArn) {
this.missionProfileArn = missionProfileArn;
}
/**
*
* ARN of a mission profile.
*
*
* @return ARN of a mission profile.
*/
public String getMissionProfileArn() {
return this.missionProfileArn;
}
/**
*
* ARN of a mission profile.
*
*
* @param missionProfileArn
* ARN of a mission profile.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withMissionProfileArn(String missionProfileArn) {
setMissionProfileArn(missionProfileArn);
return this;
}
/**
*
* Amount of time after a contact ends that you’d like to receive a CloudWatch event indicating the pass has
* finished.
*
*
* @param postPassEndTime
* Amount of time after a contact ends that you’d like to receive a CloudWatch event indicating the pass has
* finished.
*/
public void setPostPassEndTime(java.util.Date postPassEndTime) {
this.postPassEndTime = postPassEndTime;
}
/**
*
* Amount of time after a contact ends that you’d like to receive a CloudWatch event indicating the pass has
* finished.
*
*
* @return Amount of time after a contact ends that you’d like to receive a CloudWatch event indicating the pass has
* finished.
*/
public java.util.Date getPostPassEndTime() {
return this.postPassEndTime;
}
/**
*
* Amount of time after a contact ends that you’d like to receive a CloudWatch event indicating the pass has
* finished.
*
*
* @param postPassEndTime
* Amount of time after a contact ends that you’d like to receive a CloudWatch event indicating the pass has
* finished.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withPostPassEndTime(java.util.Date postPassEndTime) {
setPostPassEndTime(postPassEndTime);
return this;
}
/**
*
* Amount of time prior to contact start you’d like to receive a CloudWatch event indicating an upcoming pass.
*
*
* @param prePassStartTime
* Amount of time prior to contact start you’d like to receive a CloudWatch event indicating an upcoming
* pass.
*/
public void setPrePassStartTime(java.util.Date prePassStartTime) {
this.prePassStartTime = prePassStartTime;
}
/**
*
* Amount of time prior to contact start you’d like to receive a CloudWatch event indicating an upcoming pass.
*
*
* @return Amount of time prior to contact start you’d like to receive a CloudWatch event indicating an upcoming
* pass.
*/
public java.util.Date getPrePassStartTime() {
return this.prePassStartTime;
}
/**
*
* Amount of time prior to contact start you’d like to receive a CloudWatch event indicating an upcoming pass.
*
*
* @param prePassStartTime
* Amount of time prior to contact start you’d like to receive a CloudWatch event indicating an upcoming
* pass.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withPrePassStartTime(java.util.Date prePassStartTime) {
setPrePassStartTime(prePassStartTime);
return this;
}
/**
*
* Region of a contact.
*
*
* @param region
* Region of a contact.
*/
public void setRegion(String region) {
this.region = region;
}
/**
*
* Region of a contact.
*
*
* @return Region of a contact.
*/
public String getRegion() {
return this.region;
}
/**
*
* Region of a contact.
*
*
* @param region
* Region of a contact.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withRegion(String region) {
setRegion(region);
return this;
}
/**
*
* ARN of a satellite.
*
*
* @param satelliteArn
* ARN of a satellite.
*/
public void setSatelliteArn(String satelliteArn) {
this.satelliteArn = satelliteArn;
}
/**
*
* ARN of a satellite.
*
*
* @return ARN of a satellite.
*/
public String getSatelliteArn() {
return this.satelliteArn;
}
/**
*
* ARN of a satellite.
*
*
* @param satelliteArn
* ARN of a satellite.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withSatelliteArn(String satelliteArn) {
setSatelliteArn(satelliteArn);
return this;
}
/**
*
* Start time of a contact in UTC.
*
*
* @param startTime
* Start time of a contact in UTC.
*/
public void setStartTime(java.util.Date startTime) {
this.startTime = startTime;
}
/**
*
* Start time of a contact in UTC.
*
*
* @return Start time of a contact in UTC.
*/
public java.util.Date getStartTime() {
return this.startTime;
}
/**
*
* Start time of a contact in UTC.
*
*
* @param startTime
* Start time of a contact in UTC.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withStartTime(java.util.Date startTime) {
setStartTime(startTime);
return this;
}
/**
*
* Tags assigned to a contact.
*
*
* @return Tags assigned to a contact.
*/
public java.util.Map getTags() {
return tags;
}
/**
*
* Tags assigned to a contact.
*
*
* @param tags
* Tags assigned to a contact.
*/
public void setTags(java.util.Map tags) {
this.tags = tags;
}
/**
*
* Tags assigned to a contact.
*
*
* @param tags
* Tags assigned to a contact.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withTags(java.util.Map tags) {
setTags(tags);
return this;
}
/**
* Add a single Tags entry
*
* @see DescribeContactResult#withTags
* @returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult addTagsEntry(String key, String value) {
if (null == this.tags) {
this.tags = new java.util.HashMap();
}
if (this.tags.containsKey(key))
throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided.");
this.tags.put(key, value);
return this;
}
/**
* Removes all the entries added into Tags.
*
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult clearTagsEntries() {
this.tags = null;
return this;
}
/**
*
* Projected time in UTC your satellite will set below the receive mask. This time is based
* on the satellite's current active ephemeris for future contacts and the ephemeris that was active during contact
* execution for completed contacts.
*
*
* @param visibilityEndTime
* Projected time in UTC your satellite will set below the receive mask. This time is
* based on the satellite's current active ephemeris for future contacts and the ephemeris that was active
* during contact execution for completed contacts.
*/
public void setVisibilityEndTime(java.util.Date visibilityEndTime) {
this.visibilityEndTime = visibilityEndTime;
}
/**
*
* Projected time in UTC your satellite will set below the receive mask. This time is based
* on the satellite's current active ephemeris for future contacts and the ephemeris that was active during contact
* execution for completed contacts.
*
*
* @return Projected time in UTC your satellite will set below the receive mask. This time
* is based on the satellite's current active ephemeris for future contacts and the ephemeris that was
* active during contact execution for completed contacts.
*/
public java.util.Date getVisibilityEndTime() {
return this.visibilityEndTime;
}
/**
*
* Projected time in UTC your satellite will set below the receive mask. This time is based
* on the satellite's current active ephemeris for future contacts and the ephemeris that was active during contact
* execution for completed contacts.
*
*
* @param visibilityEndTime
* Projected time in UTC your satellite will set below the receive mask. This time is
* based on the satellite's current active ephemeris for future contacts and the ephemeris that was active
* during contact execution for completed contacts.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withVisibilityEndTime(java.util.Date visibilityEndTime) {
setVisibilityEndTime(visibilityEndTime);
return this;
}
/**
*
* Projected time in UTC your satellite will rise above the receive mask. This time is based
* on the satellite's current active ephemeris for future contacts and the ephemeris that was active during contact
* execution for completed contacts.
*
*
* @param visibilityStartTime
* Projected time in UTC your satellite will rise above the receive mask. This time is
* based on the satellite's current active ephemeris for future contacts and the ephemeris that was active
* during contact execution for completed contacts.
*/
public void setVisibilityStartTime(java.util.Date visibilityStartTime) {
this.visibilityStartTime = visibilityStartTime;
}
/**
*
* Projected time in UTC your satellite will rise above the receive mask. This time is based
* on the satellite's current active ephemeris for future contacts and the ephemeris that was active during contact
* execution for completed contacts.
*
*
* @return Projected time in UTC your satellite will rise above the receive mask. This time
* is based on the satellite's current active ephemeris for future contacts and the ephemeris that was
* active during contact execution for completed contacts.
*/
public java.util.Date getVisibilityStartTime() {
return this.visibilityStartTime;
}
/**
*
* Projected time in UTC your satellite will rise above the receive mask. This time is based
* on the satellite's current active ephemeris for future contacts and the ephemeris that was active during contact
* execution for completed contacts.
*
*
* @param visibilityStartTime
* Projected time in UTC your satellite will rise above the receive mask. This time is
* based on the satellite's current active ephemeris for future contacts and the ephemeris that was active
* during contact execution for completed contacts.
* @return Returns a reference to this object so that method calls can be chained together.
*/
public DescribeContactResult withVisibilityStartTime(java.util.Date visibilityStartTime) {
setVisibilityStartTime(visibilityStartTime);
return this;
}
/**
* Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be
* redacted from this string using a placeholder value.
*
* @return A string representation of this object.
*
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("{");
if (getContactId() != null)
sb.append("ContactId: ").append(getContactId()).append(",");
if (getContactStatus() != null)
sb.append("ContactStatus: ").append(getContactStatus()).append(",");
if (getDataflowList() != null)
sb.append("DataflowList: ").append(getDataflowList()).append(",");
if (getEndTime() != null)
sb.append("EndTime: ").append(getEndTime()).append(",");
if (getErrorMessage() != null)
sb.append("ErrorMessage: ").append(getErrorMessage()).append(",");
if (getGroundStation() != null)
sb.append("GroundStation: ").append(getGroundStation()).append(",");
if (getMaximumElevation() != null)
sb.append("MaximumElevation: ").append(getMaximumElevation()).append(",");
if (getMissionProfileArn() != null)
sb.append("MissionProfileArn: ").append(getMissionProfileArn()).append(",");
if (getPostPassEndTime() != null)
sb.append("PostPassEndTime: ").append(getPostPassEndTime()).append(",");
if (getPrePassStartTime() != null)
sb.append("PrePassStartTime: ").append(getPrePassStartTime()).append(",");
if (getRegion() != null)
sb.append("Region: ").append(getRegion()).append(",");
if (getSatelliteArn() != null)
sb.append("SatelliteArn: ").append(getSatelliteArn()).append(",");
if (getStartTime() != null)
sb.append("StartTime: ").append(getStartTime()).append(",");
if (getTags() != null)
sb.append("Tags: ").append(getTags()).append(",");
if (getVisibilityEndTime() != null)
sb.append("VisibilityEndTime: ").append(getVisibilityEndTime()).append(",");
if (getVisibilityStartTime() != null)
sb.append("VisibilityStartTime: ").append(getVisibilityStartTime());
sb.append("}");
return sb.toString();
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (obj instanceof DescribeContactResult == false)
return false;
DescribeContactResult other = (DescribeContactResult) obj;
if (other.getContactId() == null ^ this.getContactId() == null)
return false;
if (other.getContactId() != null && other.getContactId().equals(this.getContactId()) == false)
return false;
if (other.getContactStatus() == null ^ this.getContactStatus() == null)
return false;
if (other.getContactStatus() != null && other.getContactStatus().equals(this.getContactStatus()) == false)
return false;
if (other.getDataflowList() == null ^ this.getDataflowList() == null)
return false;
if (other.getDataflowList() != null && other.getDataflowList().equals(this.getDataflowList()) == false)
return false;
if (other.getEndTime() == null ^ this.getEndTime() == null)
return false;
if (other.getEndTime() != null && other.getEndTime().equals(this.getEndTime()) == false)
return false;
if (other.getErrorMessage() == null ^ this.getErrorMessage() == null)
return false;
if (other.getErrorMessage() != null && other.getErrorMessage().equals(this.getErrorMessage()) == false)
return false;
if (other.getGroundStation() == null ^ this.getGroundStation() == null)
return false;
if (other.getGroundStation() != null && other.getGroundStation().equals(this.getGroundStation()) == false)
return false;
if (other.getMaximumElevation() == null ^ this.getMaximumElevation() == null)
return false;
if (other.getMaximumElevation() != null && other.getMaximumElevation().equals(this.getMaximumElevation()) == false)
return false;
if (other.getMissionProfileArn() == null ^ this.getMissionProfileArn() == null)
return false;
if (other.getMissionProfileArn() != null && other.getMissionProfileArn().equals(this.getMissionProfileArn()) == false)
return false;
if (other.getPostPassEndTime() == null ^ this.getPostPassEndTime() == null)
return false;
if (other.getPostPassEndTime() != null && other.getPostPassEndTime().equals(this.getPostPassEndTime()) == false)
return false;
if (other.getPrePassStartTime() == null ^ this.getPrePassStartTime() == null)
return false;
if (other.getPrePassStartTime() != null && other.getPrePassStartTime().equals(this.getPrePassStartTime()) == false)
return false;
if (other.getRegion() == null ^ this.getRegion() == null)
return false;
if (other.getRegion() != null && other.getRegion().equals(this.getRegion()) == false)
return false;
if (other.getSatelliteArn() == null ^ this.getSatelliteArn() == null)
return false;
if (other.getSatelliteArn() != null && other.getSatelliteArn().equals(this.getSatelliteArn()) == false)
return false;
if (other.getStartTime() == null ^ this.getStartTime() == null)
return false;
if (other.getStartTime() != null && other.getStartTime().equals(this.getStartTime()) == false)
return false;
if (other.getTags() == null ^ this.getTags() == null)
return false;
if (other.getTags() != null && other.getTags().equals(this.getTags()) == false)
return false;
if (other.getVisibilityEndTime() == null ^ this.getVisibilityEndTime() == null)
return false;
if (other.getVisibilityEndTime() != null && other.getVisibilityEndTime().equals(this.getVisibilityEndTime()) == false)
return false;
if (other.getVisibilityStartTime() == null ^ this.getVisibilityStartTime() == null)
return false;
if (other.getVisibilityStartTime() != null && other.getVisibilityStartTime().equals(this.getVisibilityStartTime()) == false)
return false;
return true;
}
@Override
public int hashCode() {
final int prime = 31;
int hashCode = 1;
hashCode = prime * hashCode + ((getContactId() == null) ? 0 : getContactId().hashCode());
hashCode = prime * hashCode + ((getContactStatus() == null) ? 0 : getContactStatus().hashCode());
hashCode = prime * hashCode + ((getDataflowList() == null) ? 0 : getDataflowList().hashCode());
hashCode = prime * hashCode + ((getEndTime() == null) ? 0 : getEndTime().hashCode());
hashCode = prime * hashCode + ((getErrorMessage() == null) ? 0 : getErrorMessage().hashCode());
hashCode = prime * hashCode + ((getGroundStation() == null) ? 0 : getGroundStation().hashCode());
hashCode = prime * hashCode + ((getMaximumElevation() == null) ? 0 : getMaximumElevation().hashCode());
hashCode = prime * hashCode + ((getMissionProfileArn() == null) ? 0 : getMissionProfileArn().hashCode());
hashCode = prime * hashCode + ((getPostPassEndTime() == null) ? 0 : getPostPassEndTime().hashCode());
hashCode = prime * hashCode + ((getPrePassStartTime() == null) ? 0 : getPrePassStartTime().hashCode());
hashCode = prime * hashCode + ((getRegion() == null) ? 0 : getRegion().hashCode());
hashCode = prime * hashCode + ((getSatelliteArn() == null) ? 0 : getSatelliteArn().hashCode());
hashCode = prime * hashCode + ((getStartTime() == null) ? 0 : getStartTime().hashCode());
hashCode = prime * hashCode + ((getTags() == null) ? 0 : getTags().hashCode());
hashCode = prime * hashCode + ((getVisibilityEndTime() == null) ? 0 : getVisibilityEndTime().hashCode());
hashCode = prime * hashCode + ((getVisibilityStartTime() == null) ? 0 : getVisibilityStartTime().hashCode());
return hashCode;
}
@Override
public DescribeContactResult clone() {
try {
return (DescribeContactResult) super.clone();
} catch (CloneNotSupportedException e) {
throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e);
}
}
}