code: public void setInitialType(Type type) {
          Type initial = getInitialType();
          Type actual = Type.preserveType(initial, type);
          if (actual != null && !actual.equals(initial)) {
              if (initial == null) {
                  setType(actual);
              }
              else {
                  Iterator<Conversion> it = mConversions.iterator();
                  mConversions = new LinkedList<Conversion>();
                  // Prefer cast for initial type for correct operation of
                  // setInitialType if a conversion needs to be inserted at the
                  // beginning.
                  mConversions.add(new Conversion(null, actual, true));
                  while (it.hasNext()) {
                      Conversion conv = (Conversion)it.next();
                      convertTo(conv.getToType(), conv.isCastPreferred());
                  }
              }
          }
      }
docs: Sets the intial type in the conversion chain, but does not clear the
  conversions.