code: private Convert resolveConvert(FunctionRef fun) {
          checkNumberOfOperands(fun, 1);
          final Convert convert = of.createConvert().withOperand(fun.getOperand().get(0));
          final SystemModel sm = builder.getSystemModel();
          switch (fun.getName()) {
              case "ToString":
                  convert.setToType(builder.dataTypeToQName(sm.getString()));
                  break;
              case "ToBoolean":
                  convert.setToType(builder.dataTypeToQName(sm.getBoolean()));
                  break;
              case "ToInteger":
                  convert.setToType(builder.dataTypeToQName(sm.getInteger()));
                  break;
              case "ToDecimal":
                  convert.setToType(builder.dataTypeToQName(sm.getDecimal()));
                  break;
              case "ToQuantity":
                  convert.setToType(builder.dataTypeToQName(sm.getQuantity()));
                  break;
              case "ToRatio":
                  convert.setToType(builder.dataTypeToQName(sm.getRatio()));
                  break;
              case "ToDate":
                  convert.setToType(builder.dataTypeToQName(sm.getDate()));
                  break;
              case "ToDateTime":
                  convert.setToType(builder.dataTypeToQName(sm.getDateTime()));
                  break;
              case "ToTime":
                  convert.setToType(builder.dataTypeToQName(sm.getTime()));
                  break;
              case "ToConcept":
                  convert.setToType(builder.dataTypeToQName(sm.getConcept()));
                  break;
              default:
                  throw new IllegalArgumentException(
                          String.format("Could not resolve call to system operator %s. Unknown conversion type.", fun.getName()));
          }
          builder.resolveCall("System", fun.getName(), new ConvertInvocation(convert));
          return convert;
      }
docs: Type Functions