code: @Override
      public void setContract(Contract c) {
          super.setContract(c);
          for (Field f : params) {
              f.setContract(c);
          }
          if (returns != null) {
              returns.setContract(c);
          }
      }
docs: Sets the Contract for this Function.  Propegates this down to its param and
  return Fields