public void put(final ValueType value, final KeyType... keys) {

        if (ArrayUtils.isEmpty(keys)) {
            return;
        }
        int keysLength = keys.length;
        if (keysLength == 1) {
            put(value, keys[0]);
        } else {
            StorageComponent<KeyType, ValueType> childStorageComponent = getStorageComponent(keys[0]);
            int lastKeyIndex = keysLength - 1;
            for (int i = 1; i < lastKeyIndex; i++) {
                childStorageComponent = childStorageComponent.getStorageComponent(keys[i]);
            }
            childStorageComponent.put(value, keys[lastKeyIndex]);
        }
    }
public void put ( final ValueType value , final KeyType ... keys ) { if ( ArrayUtils . isEmpty ( keys ) ) { return ; } int keysLength = keys . length ; if ( keysLength == 1 ) { put ( value , keys [ 0 ] ) ; } else { StorageComponent < KeyType , ValueType > childStorageComponent = getStorageComponent ( keys [ 0 ] ) ; int lastKeyIndex = keysLength - 1 ; for ( int i = 1 ; i < lastKeyIndex ; i ++ ) { childStorageComponent = childStorageComponent . getStorageComponent ( keys [ i ] ) ; } childStorageComponent . put ( value , keys [ lastKeyIndex ] ) ; } }
Storages the value by keys.

@param value
the value to storage.
@param keys
the keys to storage value.