[fn.drop] 去掉空数组、空对象及布尔化后为false的值
@param srcArr  : array
@param isDrop0 : boolean = false
556110
function drop(srcArr, isDrop0) {
      var tmpArr = [];
      forEach(srcArr, function (val) {
        var isLen0 = typeOf(val, 'arr', 'obj') && len(val) === 0;
        if ((val && !isLen0) || (!isDrop0 && val === 0)) tmpArr.push(val);
      });
      return tmpArr;
    }
1277700
public static boolean isEmpty(@Nullable String str) {
        if (str == null || str.length() == 0) {
            return true;
        }
        return false;
    }
210792
public static boolean isEmpty(final String str, final boolean trim) {
	if (!trim) return isEmpty(str);
	return str == null || str.trim().length() == 0;
    }
65183
boolean doMerge(String[] srcDataDirs, Collection<File> dstDataDirs, 
      int namespaceId, NamespaceInfo nsInfo, StartupOption startOpt) 
    throws IOException {
    HashMap<File, File> dirsToMerge = new HashMap<File, File>();
    int i = 0;
    for (Iterator<File> it = dstDataDirs.iterator(); it.hasNext(); i++) {
      File dstDataDir = it.next();
      if (dstDataDir.exists()) {
        continue;
      }
      File srcDataDir = NameSpaceSliceStorage.getNsRoot(
          namespaceId, new File(srcDataDirs[i], STORAGE_DIR_CURRENT));
      if (!srcDataDir.exists() || !srcDataDir.isDirectory()) {
        LOG.info("Source data directory " +
            srcDataDir + " doesn't exist.");
        continue;
      }
      dirsToMerge.put(srcDataDir, dstDataDir);
    }
    if (dirsToMerge.size() == 0)
      //No merge is needed
      return false;
    
    if (dirsToMerge.size() != dstDataDirs.size()) {
      // Last merge succeeds partially
      throw new IOException("Merge fail: not all directories are merged successfully.");
    }
    
    MergeThread[] mergeThreads = new MergeThread[dirsToMerge.size()];
    // start to merge
    i = 0;
    for (Map.Entry<File, File> entry: dirsToMerge.entrySet()) {
      MergeThread thread = new MergeThread(entry.getKey(), entry.getValue(), nsInfo);
      thread.start();
      mergeThreads[i] = thread;
      i++;
    }
    // wait for merge to be done
    for (MergeThread thread : mergeThreads) {
      try {
        thread.join();
      } catch (InterruptedException e) {
        throw (InterruptedIOException)new InterruptedIOException().initCause(e);
      }
    }
    // check for errors
    for (MergeThread thread : mergeThreads) {
      if (thread.error != null)
        throw new IOException(thread.error);
    }
    return true;
  }
902719
public static boolean isEmpty(String str) {
        if (str == null)
            return true;
        if ("".equals(str.trim()))
            return true;
        return str.isEmpty();
    }
268791
boolean isTruthy(RTObject obj) throws Exception {
		boolean truthy = false;
		if (obj instanceof Value) {
			Value<?> val = (Value<?>) obj;

			if (val instanceof DivertTargetValue) {
				DivertTargetValue divTarget = (DivertTargetValue) val;
				error("Shouldn't use a divert target (to " + divTarget.getTargetPath()
						+ ") as a conditional value. Did you intend a function call 'likeThis()' or a read count check 'likeThis'? (no arrows)");
				return false;
			}

			return val.isTruthy();
		}
		return truthy;
	}
1139431
public final Parser<RECORD> dropDissector(Class<? extends Dissector> dissectorClassToDrop) {
        assembled = false;
        Set<Dissector> removeDissector = new HashSet<>();
        for (final Dissector dissector : allDissectors) {
            if (dissector.getClass().equals(dissectorClassToDrop)) {
                removeDissector.add(dissector);
            }
        }
        allDissectors.removeAll(removeDissector);
        return this;
    }
1164648
def dragdrop(self, chviewer, uris):
        
        # find out our channel
        chname = self.get_channel_name(chviewer)
        self.open_uris(uris, chname=chname)
        return True
1190731
public boolean dropTriggers(String tableName, String columnName) {
		boolean dropped = has(tableName, columnName);
		if (dropped) {
			dropAllTriggers(tableName, columnName);
		}
		return dropped;
	}
116528
private void reportDrop(long bytes, Throwable reason)
    {
        if (monitor != null) {
            monitor.corruption(bytes, reason);
        }
    }
171191
private RemoteIterator<LocatedFileStatus> arrayListing(final String src)
  throws IOException {
    return new RemoteIterator<LocatedFileStatus>() {
      private FileStatus[] stats;
      private int i = 0;

      { //initializer
        stats = listPaths(src);
        if (stats == null) {
          throw new FileNotFoundException("File " + src + " does not exist.");
        }
      }

      @Override
      public boolean hasNext() throws IOException {
        return i<stats.length;
      }

      @Override
      public LocatedFileStatus next() throws IOException {
        if (!hasNext()) {
          throw new NoSuchElementException("No more entry in " + src);
        }
        FileStatus result = stats[i++];
        BlockLocation[] locs = result.isDir() ? null :
            getBlockLocations(
                result.getPath().toUri().getPath(), 0, result.getLen());
        return new LocatedFileStatus(result, locs);
      }
    };
  }
733735
private void useRoundRobinLists(
      List<DropEntry> newDropList, List<BackendAddressGroup> newBackendAddrList,
      @Nullable GrpclbClientLoadRecorder loadRecorder) {
    logger.log(
        ChannelLogLevel.INFO, "Using RR list={0}, drop={1}", newBackendAddrList, newDropList);
    HashMap<List<EquivalentAddressGroup>, Subchannel> newSubchannelMap =
        new HashMap<>();
    List<BackendEntry> newBackendList = new ArrayList<>();

    switch (mode) {
      case ROUND_ROBIN:
        for (BackendAddressGroup backendAddr : newBackendAddrList) {
          EquivalentAddressGroup eag = backendAddr.getAddresses();
          List<EquivalentAddressGroup> eagAsList = Collections.singletonList(eag);
          Subchannel subchannel = newSubchannelMap.get(eagAsList);
          if (subchannel == null) {
            subchannel = subchannels.get(eagAsList);
            if (subchannel == null) {
              subchannel = subchannelPool.takeOrCreateSubchannel(
                  eag, createSubchannelAttrs(), this);
              subchannel.requestConnection();
            }
            newSubchannelMap.put(eagAsList, subchannel);
          }
          BackendEntry entry;
          // Only picks with tokens are reported to LoadRecorder
          if (backendAddr.getToken() == null) {
            entry = new BackendEntry(subchannel);
          } else {
            entry = new BackendEntry(subchannel, loadRecorder, backendAddr.getToken());
          }
          newBackendList.add(entry);
        }
        // Close Subchannels whose addresses have been delisted
        for (Entry<List<EquivalentAddressGroup>, Subchannel> entry : subchannels.entrySet()) {
          List<EquivalentAddressGroup> eagList = entry.getKey();
          if (!newSubchannelMap.containsKey(eagList)) {
            subchannelPool.returnSubchannel(entry.getValue());
          }
        }
        subchannels = Collections.unmodifiableMap(newSubchannelMap);
        break;
      case PICK_FIRST:
        List<EquivalentAddressGroup> eagList = new ArrayList<>();
        // Because for PICK_FIRST, we create a single Subchannel for all addresses, we have to
        // attach the tokens to the EAG attributes and use TokenAttachingLoadRecorder to put them on
        // headers.
        //
        // The PICK_FIRST code path doesn't cache Subchannels.
        for (BackendAddressGroup bag : newBackendAddrList) {
          EquivalentAddressGroup origEag = bag.getAddresses();
          Attributes eagAttrs = origEag.getAttributes();
          if (bag.getToken() != null) {
            eagAttrs = eagAttrs.toBuilder()
                .set(GrpclbConstants.TOKEN_ATTRIBUTE_KEY, bag.getToken()).build();
          }
          eagList.add(new EquivalentAddressGroup(origEag.getAddresses(), eagAttrs));
        }
        Subchannel subchannel;
        if (subchannels.isEmpty()) {
          subchannel =
              helper.createSubchannel(CreateSubchannelArgs.newBuilder()
                  .setAddresses(eagList)
                  .setAttributes(createSubchannelAttrs())
                  .setStateListener(this)
                  .build());
        } else {
          checkState(subchannels.size() == 1, "Unexpected Subchannel count: %s", subchannels);
          subchannel = subchannels.values().iterator().next();
          helper.updateSubchannelAddresses(subchannel, eagList);
        }
        subchannels = Collections.singletonMap(eagList, subchannel);
        newBackendList.add(
            new BackendEntry(subchannel, new TokenAttachingTracerFactory(loadRecorder)));
        break;
      default:
        throw new AssertionError("Missing case for " + mode);
    }

    dropList = Collections.unmodifiableList(newDropList);
    backendList = Collections.unmodifiableList(newBackendList);
  }
382085
public boolean isEmpty() throws SIConnectionDroppedException
   {
      synchronized(queueMonitor)
      {
         if (state == CLOSED) throw new SIConnectionDroppedException(TraceNLS.getFormattedMessage(JFapChannelConstants.MSG_BUNDLE, "PRIORITY_QUEUE_PURGED_SICJ0077", null, "PRIORITY_QUEUE_PURGED_SICJ0077"));
         return totalQueueDepth == 0;
      }
   }
599822
public boolean anyNull() {
		// Skip the header.
		if ((segments[0].getLong(0) & FIRST_BYTE_ZERO) != 0) {
			return true;
		}
		for (int i = 8; i < nullBitsSizeInBytes; i += 8) {
			if (segments[0].getLong(i) != 0) {
				return true;
			}
		}
		return false;
	}
1366260
boolean onSplitWork(int bytesMoved) {
        if (_splitTargetRemaining <= 0) {
            _splitTargetRemaining = _splitTargetSize - bytesMoved;
            return true;
        } else {
            _splitTargetRemaining -= bytesMoved;
            return false;
        }
    }
1245978
private boolean switchToIdle() throws SIConnectionDroppedException {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "switchToIdle");
      final boolean noMoreWork;
      synchronized (priorityQueue) {
         synchronized (this) {
            noMoreWork = !isWorkAvailable();
            idle = noMoreWork;
         }
      }
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "switchToIdle", Boolean.valueOf(noMoreWork));
      return noMoreWork;
   }
383369
public boolean isEMPTYlist(int accessor) {
    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "isEMPTYlist", accessor);

    boolean isEMPTY = false;

    // We are only interested in 'real' fields, not boxed variants etc
    if (accessor < cacheSize) {
      checkIndex(accessor);

      synchronized (getMessageLockArtefact()) {

        // We can only have an EMPTY singleton for the field if it is in the cache,
        // as anything which is (still) assembled can't be an EMPTY.
        // (Also, a false negative is harmless, whereas a false positive can lead to errors.)
        if (cache != null) {
          Object val = cache[accessor];
          // If the value is in the cache then see if it is an EMPTY singleton
          if (  (val == JSVaryingListImpl.EMPTY_UNBOXED_VARYINGLIST)
             || (val == JSFixedListImpl.EMPTY_FIXEDLIST)
             ) {
            isEMPTY = true;
          }
        }
      }
    }

    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "isEMPTYlist",  isEMPTY);
    return isEMPTY;
  }