private List<ProducedType> getInternalSatisfiedTypes() {
   List<ProducedType> satisfiedTypes = new ArrayList<ProducedType>();
   for (ProducedType st : getDeclaration().getSatisfiedTypes()) {
     satisfiedTypes.add(st.substituteInternal(getTypeArguments()));
   }
   return satisfiedTypes;
 }
 private List<ProducedType> getInternalCaseTypes() {
   if (getDeclaration().getCaseTypes() == null) {
     return null;
   } else {
     List<ProducedType> caseTypes = new ArrayList<ProducedType>();
     for (ProducedType ct : getDeclaration().getCaseTypes()) {
       caseTypes.add(ct.substituteInternal(getTypeArguments()));
     }
     return caseTypes;
   }
 }
 private ProducedType getInternalExtendedType() {
   ProducedType extendedType = getDeclaration().getExtendedType();
   return extendedType == null ? null : extendedType.substituteInternal(getTypeArguments());
 }
 private ProducedType getInternalSelfType() {
   ProducedType selfType = getDeclaration().getSelfType();
   return selfType == null ? null : selfType.substituteInternal(getTypeArguments());
 }