class CopyStrategyHandler {

    Element copyElementForRemovalIfNeeded(Element element) {
        if (element == null) {
            return null;
        }

        if (copyOnRead && copyOnWrite) {
            return copyStrategy.copyForWrite(element);
        } else {
            return element;
        }
    }

    public  CopyStrategyHandler(boolean copyOnRead, boolean copyOnWrite, ReadWriteCopyStrategy<Element> copyStrategy);

}