@Override
      public V get() {
        //noinspection unchecked
        return computed == null? (V)(computed = new Object[] {provider.get()})[0] : (V)computed[0];
      }
@Override
      public V get()