public Node<T> trimByVisibility() { if (next == null) { return this; } Node<T> newNext = next.trimByVisibility(); if (explicitName != null) { // this already has highest; how about next one? if (newNext.explicitName == null) { // next one not, drop it return withNext(null); } // both have it, keep return withNext(newNext); } if (newNext.explicitName != null) { // next one has higher, return it... return newNext; } // neither has explicit name; how about visibility? if (isVisible == newNext.isVisible) { // same; keep both in current order return withNext(newNext); } return isVisible ? withNext(null) : newNext; }
public Node<T> trimByVisibility() { if (next == null) { return this; } Node<T> newNext = next.trimByVisibility(); if (explicitName != null) { // this already has highest; how about next one? if (newNext.explicitName == null) { // next one not, drop it return withNext(null); } // both have it, keep return withNext(newNext); } if (newNext.explicitName != null) { // next one has higher, return it... return newNext; } // neither has explicit name; how about visibility? if (isVisible == newNext.isVisible) { // same; keep both in current order return withNext(newNext); } return isVisible ? withNext(null) : newNext; }
private <T> Node<T> _trimByVisibility(Node<T> node) { if (node == null) { return node; } return node.trimByVisibility(); }
private <T> Node<T> _trimByVisibility(Node<T> node) { if (node == null) { return node; } return node.trimByVisibility(); }
public Node<T> trimByVisibility() { if (next == null) { return this; } Node<T> newNext = next.trimByVisibility(); if (explicitName != null) { // this already has highest; how about next one? if (newNext.explicitName == null) { // next one not, drop it return withNext(null); } // both have it, keep return withNext(newNext); } if (newNext.explicitName != null) { // next one has higher, return it... return newNext; } // neither has explicit name; how about visibility? if (isVisible == newNext.isVisible) { // same; keep both in current order return withNext(newNext); } return isVisible ? withNext(null) : newNext; }
private <T> Node<T> _trimByVisibility(Node<T> node) { if (node == null) { return node; } return node.trimByVisibility(); }
public Node<T> trimByVisibility() { if (next == null) { return this; } Node<T> newNext = next.trimByVisibility(); if (explicitName != null) { // this already has highest; how about next one? if (newNext.explicitName == null) { // next one not, drop it return withNext(null); } // both have it, keep return withNext(newNext); } if (newNext.explicitName != null) { // next one has higher, return it... return newNext; } // neither has explicit name; how about visibility? if (isVisible == newNext.isVisible) { // same; keep both in current order return withNext(newNext); } return isVisible ? withNext(null) : newNext; }
private <T> Node<T> _trimByVisibility(Node<T> node) { if (node == null) { return node; } return node.trimByVisibility(); }