docs: public static String print(Type type) {
          return type.match(new Type.MatchBlock<String>(){
              @Override
              public String _case(Ref x) {
                  return print(x.type);
              }
  
              @Override
              public String _case(Primitive x) {
                  return print(x.type);
              }
              
          });
      }