@Override
 public boolean equals(Object object) {
   if (!(object instanceof FunctionTypeImpl)) {
     return false;
   }
   FunctionTypeImpl otherType = (FunctionTypeImpl) object;
   return ObjectUtilities.equals(getElement(), otherType.getElement())
       && Arrays.equals(normalParameterTypes, otherType.normalParameterTypes)
       && Arrays.equals(optionalParameterTypes, otherType.optionalParameterTypes)
       && equals(namedParameterTypes, otherType.namedParameterTypes)
       && ObjectUtilities.equals(returnType, otherType.returnType);
 }