public Object clone() { StoredProcedure copy = new StoredProcedure(); copy.setModelID(getModelID()); copy.setProcedureName(getProcedureName()); copy.setProcedureCallableName(getProcedureCallableName()); copy.setProcedureID(getProcedureID()); copy.setGroup(getGroup().clone()); copy.callableName = callableName; copy.calledWithReturn = calledWithReturn; Collection<SPParameter> params = getParameters(); for (SPParameter spParameter : params) { copy.setParameter((SPParameter) spParameter.clone()); } copy.resultSetParameterKey = resultSetParameterKey; this.copyMetadataState(copy); copy.displayNamedParameters = displayNamedParameters; copy.isCallableStatement = isCallableStatement; copy.isProcedureRelational = isProcedureRelational; return copy; }