@Override
    public AmazonWebServiceRequest clone() {
        try {
            AmazonWebServiceRequest cloned = (AmazonWebServiceRequest) super.clone();
            cloned.setCloneSource(this);

            // Deep-copy context to ensure modifications made by the handlers do not leak back to the caller or other uses of the
            // same request.
            cloned.handlerContext = new HashMap<HandlerContextKey<?>, Object>(cloned.handlerContext);

            return cloned;
        } catch (CloneNotSupportedException e) {
            throw new IllegalStateException(
                    "Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e);
        }
    }
Creates a shallow clone of this object for all fields except the handler context. Explicitly does <em>not</em> clone the
deep structure of the other fields in the message.

@see Object#clone()
aws-java-sdk-core/src/main/java/com/amazonaws/AmazonWebServiceRequest.java