code: @SuppressWarnings("unchecked")
      public T[] getInstallations() {
          if (installations != null)
              return installations.clone();
  
          Type bt = Types.getBaseClass(getClass(), ToolDescriptor.class);
          if (bt instanceof ParameterizedType) {
              ParameterizedType pt = (ParameterizedType) bt;
              // this 't' is the closest approximation of T of Descriptor<T>.
              Class t = Types.erasure(pt.getActualTypeArguments()[0]);
              return (T[])Array.newInstance(t,0);
          } else {
              // can't infer the type. Fallback
              return emptyArray_unsafeCast();
          }
      }
docs: Configured instances of {@link ToolInstallation}s.
  
  @return read-only list of installations;
  can be empty but never null.