Sync source with Java

sync with latest state